/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package util;

import dados.ComunicacaoBD;
import dados.MontadorBusca;
import entidade.IEntidade;
import excecoes.ValidacaoSemanticaException;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.xml.parsers.ParserConfigurationException;
import tradutor.Tradutor;
import validacao.ConfigValidacaoSemantica;
import validacao.GerenciadorSemantico;
import validacao.ValidacaoSemantica;

/**
 *
 * @author Emanoel
 */
public class TestaSistema {
    
    public static void main(String[] args){
        try {
            String retorno = "";
            String xml = "<root>"+
    "<Entidade>"+
        "<nome>aluno</nome>"+
        "<banco>teste_banco</banco>"+
        "<atributos>"+
            "<entry>"+
                "<string>nome</string>"+
                "<Atributo>"+
                    "<nome>nome</nome>"+
                    "<valor class=\"string\">emanoel</valor>"+
                "</Atributo>"+
            "</entry>"+
        "</atributos>"+
    "</Entidade>"+
"</root>";
            IEntidade entidade = Tradutor.traduzir(xml);            
            ValidacaoSemantica.validacaoSemantica(entidade);
            String query = MontadorBusca.montarBusca(entidade);
            ResultSet rs = ComunicacaoBD.executarQuery(query, entidade.getBanco());
            ArrayList<ConfigValidacaoSemantica> configs = GerenciadorSemantico.carregarDefinicoesDB();
            ConfigValidacaoSemantica escolhido = null;
            for (int i = 0; i < configs.size(); i++) {
                escolhido = configs.get(i);
            }
            retorno += "<resultado>\n";
            while(rs.next()){
                retorno += "<" + escolhido.getName() + ">\n";
                for (int i = 0; i < escolhido.getColumns().size(); i++) {
                    String coluna = escolhido.getColumns().get(i);
                    retorno += "<" + coluna + ">" + rs.getString(coluna) + "</" + coluna + ">\n";
                }
                retorno += "</" + escolhido.getName() + ">";
            }
            //return retorno;
            System.out.println(retorno);
        } catch (SQLException ex) {
            System.out.println("<error>" + ex.getMessage() + "</error>");
        } catch (ParserConfigurationException ex) {
            System.out.println("<error>" + ex.getMessage() + "</error>");
        } catch (IOException ex) {
            System.out.println("<error>" + ex.getMessage() + "</error>");
        } catch (ValidacaoSemanticaException ex) {
            System.out.println("<error>" + ex.getMessage() + "</error>");
        }
    }

}
